package cn.south.campus.admin.sys.service;


import cn.south.campus.admin.sys.model.entity.SysMenu;
import cn.south.campus.admin.sys.model.req.SysMenuReq;
import cn.south.campus.admin.sys.model.vo.SysMenuVo;
import cn.south.campus.admin.sys.model.vo.SysUserMenuVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author chow
 * @since 2024/10/31
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 菜单分页
     *
     * @param query query
     * @return IPage<SysMenu>
     */
    IPage<SysMenuVo> page(SysMenuReq query);

    /**
     * 菜单分页
     *
     * @param query query
     * @return IPage<SysMenu>
     */
    List<SysMenuVo> list(SysMenuReq query);

    /**
     * 查询角色的权限
     *
     * @param roleId 角色ID
     * @return List<String>
     */
    List<String> findPermission(Long roleId);

    /**
     * 查询菜单详情
     *
     * @param id id
     * @return SysMenuVo
     */
    SysMenuVo detail(Long id);

    /**
     * 新增菜单
     *
     * @param vo vo
     */
    void add(SysMenuVo vo);

    /**
     * 删除菜单
     *
     * @param id id
     */
    void delete(Long id);

    /**
     * 更新菜单
     *
     * @param vo vo
     */
    void updateMenu(SysMenuVo vo);

    /**
     * 查询角色下面的菜单
     *
     * @param roleId 角色ID
     * @return List<SysUserMenuVo>
     */
    List<SysUserMenuVo> findMenuRole(Long roleId);

    /**
     * 是否有子菜单
     *
     * @param id id
     * @return boolean
     */
    boolean isExistChildren(Long id);
}
